Плохо! Плохо!:  0
Показано с 1 по 1 из 1

Тема: [MV + MZ] CommentsReader

  1. #1
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию [MV + MZ] CommentsReader

    Название плагина: DKR_CommentsReader

    Автор: DarchanKaen

    Версия: 1.0

    Дата выхода: Версия 1.0 - 08.08.2021

    Описание плагина:
    Плагин может получать содержимое Комментариев эвентов, парсить их и искать соответствия.

    Нюансы:
    При парсинге эвента возвращается первое соответствующее слово.
    Изменять Комментарии плагин не может.

    Использование плагина(одинаково и для MV , и для MZ):
    Команды (в эвенте, в команде "Скрипт"):

    DKR.CommentsReader.readEventComments(eventId); - выводит на консоль и возвращает содержимое Комментарием эвента;
    DKR.CommentsReader.assertEventComments(eventId, word); - возвращает true, если хоть один из Комментариев РАВЕН слову - иначе false;
    DKR.CommentsReader.containsEventComments(eventId, word); - возвращает true, если хоть один из Комментариев СОДЕРЖИТ слово - иначе false;
    DKR.CommentsReader.parseEventCommentsData(eventId, wordPattern); - возвращает результат разбора Комментария (вторую часть) ПЕРВОГО схожего слова;
    DKR.CommentsReader.getAllEventMatchWord(word); - возвращает массив эвентов, Комментарий которых СОДЕРЖИТ слово.

    где:

    eventId - Id эвента;
    word- слово в ковычках (например, 'БАГ');
    wordPattern - слово в ковычках с разделителем (например, 'ОЧКИ:'; если в Комментарии указано 'ОЧКИ:29', вернет 29);

    Код:
    Спойлер Код плагина, версия 1.0:
    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR CommentsReader
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MV
     *  DKR_CommentsReader.js
     *-----------------------------------------------------------------------------
     *  08.08.2021 - Версия 1.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @target MV
     * @plugindesc (v.1.0.0) Плагин может получать содержимое Комментариев эвентов, парсить их и искать соответствия.
     * @help
     *   DKR CommentsReader 1.0
     * ----------------------------------------------------------------------------
     * ---Общая информация:
     * Плагин может получать содержимое Комментариев эвентов, парсить их и искать соответствия.
     * --Команды (для раздела "Скрипт"):
     *	DKR.CommentsReader.readEventComments(eventId); - выводит на консоль и возвращает содержимое Комментарием эвента;
     *	DKR.CommentsReader.assertEventComments(eventId, word); - возвращает true, если хоть один из Комментариев РАВЕН слову - иначе false;
     *	DKR.CommentsReader.containsEventComments(eventId, word); - возвращает true, если хоть один из Комментариев СОДЕРЖИТ слово - иначе false;
     *	DKR.CommentsReader.parseEventCommentsData(eventId, wordPattern); - возвращает результат разбора Комментария (вторую часть) ПЕРВОГО схожего слова;
     *	DKR.CommentsReader.getAllEventMatchWord(word); - возвращает массив эвентов, Комментарий которых СОДЕРЖИТ слово.
     * где:
     * eventId - Id эвента;
     * word - слово в ковычках (например, 'БАГ');
     * wordPattern  - слово в ковычках с разделителем (например, 'ОЧКИ:'; если в Комментарии указано 'ОЧКИ:29', вернет 29);
     * ----------------------------------------------------------------------------
     * ----Версия 1.0.0
     * - РЕЛИЗ
     * ----------------------------------------------------------------------------
     */
    
    
    var Imported = Imported || {};
    Imported.DKR_CommentsReader = true;
    
    var DKR = DKR || {};          
    DKR.CommentsReader = DKR.CommentsReader || {}; 
    DKR.CommentsReader.version = 1.0;
    
    
    
    ( () => {
    	
    	
    //----DATA	
    const commentCommandNumberA = 108;
    const commentCommandNumberB = 408;
    
    const modeAssert = 'ASSERT';	
    const modeContains = 'CONTAINS';
    
    
    	
    //----LOGIC	
    
    //--has
    let isEventCommentsListHas = function(eventId, logicMode, word){
    	let hasResult = false;
    	
    		//console.log('___isEventCommentsListHas_MODE_WORD:', logicMode, word);
    	
    	let eventCommentsList = getEventCommentsList(eventId);
    	
    	for(let n = 0; n < eventCommentsList.length; n++){
    		let currentComment = eventCommentsList[n];
    		
    		switch(logicMode){
    			case modeAssert:
    				if(word.trim() === currentComment){
    					hasResult = true;
    					return hasResult;
    				}
    				break;
    			case modeContains:
    				if( true === currentComment.includes( word.trim() ) ){
    					hasResult = true;
    					return hasResult;
    				}
    				break;
    		}
    		
    	}
    	
    	return hasResult;
    }
    
    
    //--parse
    let parseCommentsData = function(eventId, word, negativeMask){
    	let сommentData = negativeMask;
    	
    	let eventCommentsList = getEventCommentsList(eventId);
    	
    	for(let n = 0; n < eventCommentsList.length; n++){
    		let currentComment = eventCommentsList[n];
    		
    		if( true === currentComment.includes( word.trim() ) ){
    			let reqComment = currentComment;
    			let reqCommentData =  reqComment.split(word)[1].trim();
    			сommentData = reqCommentData;
    			break; //ONLY FIRST VALUE!
    		}
    		
    	}
    	
    	return сommentData;
    }
    
    
    //--core
    let getEventCommentsList = function(eventId){
    	let eventToInspect = $gameMap.event(eventId);
    	
    	let commentsList = [];
    	
    	if(undefined === eventToInspect.event() || null === eventToInspect.event()){
    		return inspectResultData;
    	}
    	
    	let eventPages = eventToInspect.event().pages;
    	
    	for(let n = 0; n < eventPages.length; n++){
    
    		let eventsCommandsList = eventPages[n].list;
    		
    		for(let m = 0; m < eventsCommandsList.length; m++){
    			let currentCommand = eventsCommandsList[m];
    			
    			if(commentCommandNumberA === currentCommand.code || commentCommandNumberB === currentCommand.code){
    				let comment = currentCommand.parameters[0].trim();
    				if(comment.length > 0){
    					commentsList.push(comment);
    				}
    			}
    			
    		}
    		
    	}
    	
    	return commentsList;
    }	
    	
    	
    	
    //----COMMANDS
    DKR.CommentsReader.readEventComments = function(eventId){
    	let eventCommentsList = getEventCommentsList(eventId);
    	
    		console.log('DKR_CommentsReader_eventCommentsList:', eventCommentsList);
    	
    	return eventCommentsList;
    }
    	
    DKR.CommentsReader.assertEventComments = function(eventId, word){
    	let assertResult = isEventCommentsListHas(eventId, 'ASSERT', word);
    	
    		//console.log('isEventCommentsListHas_ASSERT__' + word + ': ', assertResult);
    	
    	return assertResult;
    }
    
    DKR.CommentsReader.containsEventComments = function(eventId, word){
    	let containsResult = isEventCommentsListHas(eventId, 'CONTAINS', word);
    	
    		//console.log('isEventCommentsListHas_CONTAINS__' + word + ': ', containsResult);
    	
    	return containsResult;
    }	
    	
    DKR.CommentsReader.parseEventCommentsData = function(eventId, wordPattern){
    	let parseResult = parseCommentsData(eventId, wordPattern);
    	
    		//console.log('parseResult__' + wordPattern + ': ', parseResult);
    	
    	return parseResult;
    }
    
    DKR.CommentsReader.getAllEventMatchWord = function(wordPattern){
    	let matchEventsList = [];
    	
    	let eventsList = $gameMap.events();
    	for(let n = 0; n < eventsList.length; n++){
    		if( true === isEventCommentsListHas(eventsList[n].eventId(), 'CONTAINS', wordPattern) ){
    			matchEventsList.push(eventsList[n]);
    		}
    	}
    	
    		//console.log('matchEventsList:', matchEventsList);
    	
    	return matchEventsList;
    	
    }	
    	
    	
    })();


    Загрузка:
    Спойлер Ссылки на загрузку версии 1.0:


    Условия поставки плагина:
    Поставляется AS-IS.
    Вся ответственность при использовании - на Пользователе!
    !

    Совместимость:
    Плагин не влияет на внутреннюю логику мейкера и представляет "внешнюю" функциональность. С другими плагинами конфликтовать не должен.
    Если найдете критическую несовместимость - дайте знать.

    Для чего можно использовать:
    Для мини-игр, паззлов, чего-то вроде "боевки" - для тех случаев, когда хоть какую-то информацию нужно инкапсулировать в эвенте как отдельной сущности.
    И если не хочется/не можется использовать Примечания эвента.

    Спойлер Лирическое отступление:
    Использовал в своей "боевке" логику этого плагина, может кому пригодится.
    Плагин более полезен при каком-то скриптинге, но можно использовать и "стандартно-ручками".
    Последний раз редактировалось Darchan Kaen; 08.08.2021 в 00:36. Причина: Доофрмление

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MV + MZ] CommentsReader